package actions.visitors;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;

import veilingService.ServiceProvider;

import com.opensymphony.xwork2.ActionSupport;

@SuppressWarnings("serial")
public class ZoekBalkSearch extends ActionSupport {

	private String zoekwoord = "";
	private String zoekdiepte = "Titel";
	private int minBedrag;
	private int maxBedrag;
	private String categorieNaam, categorieZoek;
	private ArrayList<VeilingLijstItem> veilingen;
	private int resultaatVan, resultaatTot;
	private int aantalPaginas;
	private int resultatenPerPagina = 5;
	private String sorterenOp = "none";

	public String execute() {
		if (resultaatVan == 0 && resultaatTot == 0) {
			resultaatVan = 1;
			resultaatTot = resultatenPerPagina;
		}
		if (maxBedrag <= 0) {
			maxBedrag = 999999999;
		}
		if (minBedrag < 0) {
			minBedrag = 0;
		}

		categorieZoek = categorieNaam;
		if (categorieNaam.equals("alle categorien")) {
			categorieZoek = "%";
		}
		if (zoekdiepte.equals("Titel")) {
			veilingen = ServiceProvider.getVeilingService().zoekVeilingen(zoekwoord, categorieZoek, minBedrag,
					maxBedrag, resultaatVan, resultaatTot, sorterenOp);
		} else {
			veilingen = ServiceProvider.getVeilingService().zoekVeilingenTitelEnBeschrijving(zoekwoord, categorieZoek, minBedrag,
					maxBedrag, resultaatVan, resultaatTot, sorterenOp);
		}
		if (veilingen.size() == 0) {
			addActionMessage("Geen resultaten gevonden");
			return ActionSupport.INPUT;
		}
		int totaal = ServiceProvider.getVeilingService().zoekVeilingenCount(zoekwoord, categorieZoek, minBedrag,
				maxBedrag);
		aantalPaginas = (int) Math.ceil((double) totaal / (double) resultatenPerPagina);

		return ActionSupport.SUCCESS;
	}

	public String getSorterenOp() {
		return sorterenOp;
	}

	public void setSorterenOp(String sorterenOp) {
		this.sorterenOp = sorterenOp;
	}

	public ArrayList<VeilingLijstItem> getVeilingen() {
		return veilingen;
	}

	public void setZoekwoord(String zoekwoord) {
		this.zoekwoord = zoekwoord;
	}

	public void setCategorieNaam(String categorieNaam) {
		this.categorieNaam = categorieNaam;
	}

	public int getResultaatVan() {
		return resultaatVan;
	}

	public void setResultaatVan(int resultaatVan) {
		this.resultaatVan = resultaatVan;
	}

	public int getResultaatTot() {
		return resultaatTot;
	}

	public void setResultaatTot(int resultaatTot) {
		this.resultaatTot = resultaatTot;
	}

	public String getCategorieNaam() {
		return categorieNaam;
	}

	public int getAantalPaginas() {
		return aantalPaginas;
	}

	public int getResultatenPerPagina() {
		return resultatenPerPagina;
	}

	public void setResultatenPerPagina(int resultatenPerPagina) {
		this.resultatenPerPagina = resultatenPerPagina;
	}

	public void setZoekdiepte(String zoekdiepte) {
		this.zoekdiepte = zoekdiepte;
	}

	public void setMinBedrag(int minBedrag) {
		this.minBedrag = minBedrag;
	}

	public void setMaxBedrag(int maxBedrag) {
		this.maxBedrag = maxBedrag;
	}

	public int getMinBedrag() {
		return minBedrag;
	}

	public int getMaxBedrag() {
		return maxBedrag;
	}

	public String getZoekwoord() {
		return zoekwoord;
	}

	public String getZoekdiepte() {
		return zoekdiepte;
	}
}
